﻿/// <reference path="jquery-1.4.1.js" />
/// <reference path="common.js" />



//******************************************  MODELS CLASS     ***********************************************************************************************
window.Models = function Models() { };
window.Models.Hr = function Hr() { };
window.Models.Administrator = function Administrator() { };
window.Models.Attendance = function Attendance() { };
window.Models.Canteen = function Canteen() { };
window.Models.Evaluation = function Evaluation() { };
window.Models.Insurance = function Insurance() { };
window.Models.MasterData = function MasterData() { };
window.Models.Medical = function Medical() { };
window.Models.Payroll = function Payroll() { };
window.Models.Recruitment = function Recruitment() { };
Models.Hr.ProfileInfo = function Model_profileInfo(profileId, profileCodeAttendance, profileCodeEmp, profileName, profileIdNo, link) {
    /// <signature>
    /// <summary>Model</summary>
    /// <param name="profileId" type="String"></param>        
    /// <param name="profileCodeAttendance"  type="String">Mã chấm công</param>
    /// <param name="profileCodeEmp" type="String">Mã nhân viên</param>        
    /// <param name="profileName"  type="String">Tên nhân viên</param>
    /// <param name="profileIdNo" type="String">Số chứng minh nhân dân</param>      
    /// <param name="link" type="String">Url của nhân viên đó</param>    
    /// <returns type="void"></returns>
    /// </signature>

    /// <signature>
    /// <summary></summary>      
    /// <returns type="void"></returns>
    /// </signature>

    /// <field name='profileId' type='Guid'>Id của nhân viên</field>
    /// <field name='profileCodeAttendance' type='String'>mã chấm công</field>
    /// <field name='profileCodeEmp' type='String'>mã nhân viên</field>
    /// <field name='profileName' type='String'>tên nhân viên</field>
    /// <field name='profileIdNo' type='String'>Số chứng minh nhân dân</field>
    /// <field name='link' type='String'>Url của nhân viên đó</field>

    if (arguments.length == 0) {
        // constructor khong tham so
        this.profileId = "";//so guid
        this.profileCodeAttendance = "";//ma cham cong
        this.profileCodeEmp = "";//manv
        this.profileName = "";
        this.profileIdNo = "";//so cmnd
        this.link = "";
    }
    else {
        // constructor co 6 tham so
        this.profileId = profileId;//so guid
        this.profileCodeAttendance = profileCodeAttendance;//ma cham cong
        this.profileCodeEmp = profileCodeEmp;//manv
        this.profileName = profileName;
        this.profileIdNo = profileIdNo;//so cmnd
        this.link = link;
    }
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// HR Module

/*
    Module :  Human Resource
*/
var HR = new function () { };
//tạo class HR
// Created  by Tung.Ly - 19/08/2013
HR.getPersonalInfoById = function getPersonalInfoById(numberId, mode) {
    /// <summary>Lấy thông tin của user qua số CMND</summary>
    /// <param name="numberId" type="String">số chứng minh nhân dân</param>                
    /// <param name="mode" type="String"></param>                    
    /// <returns type="Model_profileInfo"></returns>    

    /*
        function nay trả về  model profileInfo                   
    */

    //inut model empty    
    var model = new Models.Hr.ProfileInfo();

    //var model = new Model_profileInfo();
    var data = { 'mode': mode, 'code': numberId };

    VnrUtils.ajax(VnrAjaxSetting.Method.Get,
                  VnrAjaxSetting.DataType.Json,
                  data,
                  function (response) {
                      //process value return
                      //json : profileId,profileCode,profileName,identificationID            
                      if (Common.isJson(response)) {
                          // convert response string to json format
                          var _jsonVariable = Common.stringToJson(response);
                          // Get set model 
                          model = new Models.Hr.ProfileInfo(_jsonVariable.profileId, _jsonVariable.profileCodeAttendance,
                                                            _jsonVariable.profileCodeEmp, _jsonVariable.profileName,
                                                            _jsonVariable.profileIdNo, _jsonVariable.link);
                      }
                  });
    return model;
};
// Created  by Tung.Ly - 19/08/2013 
HR.workTrial = function workTrial() {
    //lay so ngay thử việc            
    var trialDay = VnrUtils.getInputValue("VnrNumberField_Duration-inputEl");
    // lay ngay vao lam        
    var beginDate = VnrUtils.getInputValue("VnrDateField_DateHire-inputEl");
    //kiem tra neu ngay thử việc đúng dạng ngày và trialDay >=0
    if (beginDate.length == 10) {
        //lấy ngày bắt đầu thử việc
        var startDate = VnrUtils.changeStringToDate(beginDate);
        //add day                           
        startDate = VnrUtils.addDays(startDate, trialDay);
        //set ngay ket thuc thử việc
        VnrUtils.setInputValue("VnrDateField_DateEndProbation-inputEl", VnrUtils.getDate(startDate) + "/" + VnrUtils.getMonth(startDate) + "/" + VnrUtils.getYear(startDate));
        HR.workTrial1();
    }
};
// Created  by Tung.Ly - 19/08/2013 
HR.workTrial1 = function workTrial1() {
    //lay so ngay thử việc               
    var trialDay = VnrUtils.getInputValue("VnrNumberField_ProbExtendDays-inputEl");
    if (trialDay == '') return false;
    // lay ngay vao lam        
    var beginDate = VnrUtils.getInputValue("VnrDateField_DateEndProbation-inputEl");
    //kiem tra neu ngay thử việc đúng dạng ngày và trialDay >=0
    if (beginDate.length == 10) {
        //lấy ngày bắt đầu thử việc
        var startDate = VnrUtils.changeStringToDate(beginDate);
        //add day                           
        startDate = VnrUtils.addDays(startDate, trialDay);
        //set ngay ket thuc thử việc
        VnrUtils.setInputValue("VnrDateField_ProbExtendDate-inputEl", VnrUtils.getDate(startDate) + "/" + VnrUtils.getMonth(startDate) + "/" + VnrUtils.getYear(startDate));
    }
};
// Created  by Tung.Ly - 19/08/2013 
HR.validateManv = function validateManv(maNV) {
    VnrUtils.hide("divImageCodeEmp");
    // lấy giá tri của mã nhân viên
    var ma_nv = VnrUtils.getInputValue(maNV.inputId);
    //kiem tra đã nhập mã nhân viên chưa?
    if (VnrUtils.isNullOrEmpty(ma_nv)) {
        return;
    }
    VnrUtils.show("divImageCodeEmp");
    //json : profileId,profileCode,profileName,identificationID     
    var profileInfoModel = HR.getPersonalInfoById(ma_nv, VnrConstants.PersonalInfo);

    //kiem tra neu so MaNV da ton tai thi show img error
    if (!VnrUtils.isNullOrEmpty(profileInfoModel.profileCodeEmp)) {
        //show tag <div> , add tag <img> va tag <a> vao ben trong tag <div>            
        $('#divImageCodeEmp').html('');
        var tooltip = 'Mã Nhân Viên đã tồn tại:' + profileInfoModel.profileName + '&nbsp;&nbsp;(' + profileInfoModel.profileCodeEmp + ')';
        $('#divImageCodeEmp').append('<img  align="absmiddle" src="../../Images/decline.png" title="' + tooltip + '" />');
        valueID = ma_nv;
        //  $('#divImageCodeEmp').append('<a href="' + profileInfoModel.link + '"   target="_blank"> Mã Nhân Viên đã tồn tại:' + profileInfoModel.profileName + '&nbsp;&nbsp;(' + profileInfoModel.profileCodeEmp + ')' + '</a>');


        var message = '<img align="absmiddle" src="../../Images/decline.png" title="' + tooltip + '" /><a href="' + profileInfoModel.link + '"   target="_blank"> Mã Nhân Viên đã tồn tại:' + profileInfoModel.profileName + '&nbsp;&nbsp;(' + profileInfoModel.profileCodeEmp + ')' + '</a>';
        VnrUtils.notify(message);


        VnrUtils.setInputValue(maNV.inputId, "");

        //nếu la addnew thì set rổng 
        if (isCreated) {
            VnrUtils.setInputValue(maNV.inputId, VnrUtils.empty());
        }
    }
    else {
        // clear noi dung trong the <div> , gắn thêm tag <img> success vao tag <div>
        $('#divImageCodeEmp').html('');
        // VnrUtils.alert("has inputid :"+VnrUtils.hasInputId("App.Profile_Modify_New13_ProfileDetail_InfoPersonal_Profile1_VnrTextField_IDNo_Container"));
        $('#divImageCodeEmp').append('<img align="absmiddle" src="../../Images/user_tick.png" />');
    }
};
//close validateManv
// Created  by Tung.Ly - 19/08/2013 
HR.validateMaChamCong = function validateMaChamCong(maChamCong, profileID) {
    VnrUtils.hide("divImageCodeAttendance");
    // lấy giá tri của mã nhân viên
    var ma_ChamCong = VnrUtils.getInputValue(maChamCong.inputId);
    //kiem tra đã nhập mã nhân viên chưa?
    if (VnrUtils.isNullOrEmpty(ma_ChamCong)) {
        return;
    }
    VnrUtils.show("divImageCodeAttendance");
    //json : profileId,profileCode,profileName,identificationID        
    var profileInfoModel = HR.getPersonalInfoById(ma_ChamCong, VnrConstants.PersonalInfo);
    if (profileID == profileInfoModel.profileId) { // neu co ma cham cong ma la cua chinh nhan vien dang nhap
        return;
    }
    //kiem tra neu so MaNV da ton tai thi show img error
    if (!VnrUtils.isNullOrEmpty(profileInfoModel.profileCodeAttendance)) {
        //show tag <div> , add tag <img> va tag <a> vao ben trong tag <div>
        VnrUtils.show("divImageCodeAttendance");
        $('#divImageCodeAttendance').html('');
        var tooltip = 'Mã chấm công đã tồn tại:' + profileInfoModel.profileName + '&nbsp;&nbsp;(' + profileInfoModel.profileCodeEmp + ')';
        $('#divImageCodeAttendance').append('<img align="absmiddle" src="../../Images/decline.png" title="' + tooltip + '" />');
        valueID = ma_ChamCong;
        //   $('#divImageCodeAttendance').append('<a href="' + profileInfoModel.link + '"  target="_blank" > Mã chấm công đã tồn tại:' + profileInfoModel.profileName + '&nbsp;&nbsp;(' + profileInfoModel.profileCodeEmp + ')' + '</a>');

        var message = '<img align="absmiddle" src="../../Images/decline.png"  /><a href="' + profileInfoModel.link + '"  target="_blank" > Mã chấm công đã tồn tại &nbsp;:&nbsp; ' + profileInfoModel.profileName + '&nbsp;&nbsp;(' + profileInfoModel.profileCodeEmp + ')' + '</a>';
        VnrUtils.notify(message);
        VnrUtils.setInputValue(maChamCong.inputId, "");

        //nếu la addnew thì set rổng 
        if (isCreated) {
            VnrUtils.setInputValue(maChamCong.inputId, VnrUtils.empty());
        }
    }
    else {
        // clear noi dung trong the <div> , gắn thêm tag <img> success vao tag <div>            
        $('#divImageCodeAttendance').html('');
        $('#divImageCodeAttendance').append('<img align="absmiddle" src="../../Images/user_tick.png" />');
    }
};
//close validateManv
// Created  by Tung.Ly - 19/08/2013 
HR.validateCMND = function validateCMND(cmndID) {
    /*
          Lay tat ca thong tin qua personalID
               - lay so chung minh nhan dan
               - Neu so cmnd da ton tai thi bao loi 
               
    */

    // lấy giá tri của số chứng minh nhân dân
    var identificationIdValue = VnrUtils.getInputValue(cmndID.inputId);
    //kiem tra đã nhập số chứng minh nhân dân chưa?
    if (VnrUtils.isNullOrEmpty(identificationIdValue)) {
        return;
    }
    //json : profileId,profileCode,profileName,identificationID        
    var profileInfoModel = HR.getPersonalInfoById(identificationIdValue, VnrConstants.PersonalInfo);
    //validate so chung minh nhan dan : phai nhap 9 so        
    if (!VnrValidation.validate_CMND(identificationIdValue)) {
        VnrUtils.show("divImageIDNo");
        $('#divImageIDNo').html('');
        $('#divImageIDNo').append('<img align="absmiddle" src="../../Images/decline.png" />');
        $('#divImageIDNo').append('<span style="color:red">&nbsp;&nbsp;Phải nhập 9 số</span>');
        return;
    }
    //kiem tra neu so CMND da ton tai thi show img error
    if (!VnrUtils.isNullOrEmpty(profileInfoModel.profileIdNo)) {
        //show tag <div> , add tag <img> va tag <a> vao ben trong tag <div>
        VnrUtils.show("divImageIDNo");
        $('#divImageIDNo').html('');
        $('#divImageIDNo').append('<img align="absmiddle" src="../../Images/decline.png" />');
        //set value Id
        valueID = identificationIdValue;
        $("#divImageIDNo").append("<a href='" + profileInfoModel.link + "'   target='_blank' > CMND đã tồn tại:" + profileInfoModel.profileName + "&nbsp;&nbsp;(" + profileInfoModel.profileCodeEmp + ")" + "</a>");
    }
    else {
        // clear noi dung trong the <div> , gắn thêm tag <img> success vao tag <div>
        $('#divImageIDNo').html('');
        // VnrUtils.alert("has inputid :"+VnrUtils.hasInputId("App.Profile_Modify_New13_ProfileDetail_InfoPersonal_Profile1_VnrTextField_IDNo_Container"));
        $('#divImageIDNo').append('<img align="absmiddle" src="../../Images/user_tick.png" />');
    }
};
//close validateCMND

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// MasterData Module

/*
    Module :  MasterData
*/
var MasterData = new function () { };
//tạo class MasterData

MasterData.fnChangeWorkDay = function fnChangeWorkDay(workday) {
    /// <summary> khi change checkbox thì sẽ hiển thị (hay không hiển thị) div "divWorkday"</summary>
    /// Created  by Tung.Ly - 08/08/2013 


    //lay id hoàn chỉnh của checkbox ckb_IsDefault
    var idDefault = VnrUtils.getInputId("ckb_IsDefault");

    var isChecked = $('#' + idDefault).attr('checked');


    if (workday.checked == true) {
        VnrUtils.show("divWorkday");
    }
    else {
        VnrUtils.hide("divWorkday");
    }
};
MasterData.fnHideFormularLeave = function fnHideFormularLeave(isCheck) {
    /// <summary>ẩn textbox công thức dành cho tính lương ngày nghỉ</summary>
    /// Modified  by Tung.Ly - 09/08/2013 : sửa lại câu lệnh else
    if (isCheck) {
        VnrUtils.show("dvLeaveFormular");
    }
    else {
        VnrUtils.hide("dvLeaveFormular");
    }
};
MasterData.fnHideFormularOvertime = function fnHideFormularOvertime(isCheck) {
    /// <summary>ẩn textbox công thức dành cho tính lương ngày nghỉ</summary>
    /// Modified  by Tung.Ly - 09/08/2013 : sửa lại câu lệnh else
    if (isCheck) {
        VnrUtils.show("dvOvertimeFormular");
    }
    else {
        VnrUtils.hide("dvOvertimeFormular");
    }
};
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Administrator Module

/*
    Module :  Administrator
*/
var Administrator = new function () { };
//tạo class Administrator

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Attendance Module

/*
    Module :  Attendance
*/
var Attendance = new function () { };
//tạo class Attendance

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Canteen Module

/*
    Module :  Canteen
*/
var Canteen = new function () {
    /// <summary>Class dành Module  Canteen</summary>
};
//tạo class Canteen

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Evaluation Module

/*
    Module :  Evaluation
*/
var Evaluation = new function () {
    /// <summary>Class dành Module  Evaluation</summary>
};
//tạo class Evaluation

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Insurance Module

/*
    Module :  Insurance
*/
var Insurance = new function () {
    /// <summary>Class dành Module  Insurance</summary>
};
//tạo class Insurance

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Medical Module

/*
    Module :  Medical
*/
var Medical = new function () {
    /// <summary>Class dành Module  Medical</summary>
};
//tạo class Medical

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Payroll Module

/*
    Module :  Payroll
*/
var Payroll = new function () {
    /// <summary>Class dành Module  Payroll</summary>
};
//tạo class Payroll

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Recruitment Module

/*
    Module :  Recruitment
*/
var Recruitment = new function () {
    /// <summary>Class dành Module  Recruitment</summary>
};
//tạo class Recruitment


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Common Module

/*
    Module :  Common
*/
var Common = new function () {
    /// <summary>Class dành Module  Common</summary>
};
//tạo class Common
Common.splitFullName = function splitFullName(txtFullName, txtLastName, txtFirstName) {
    /*
      set gia tri cua textbox firstName va textBox FamiliName .
      Dung event onChange cua textbox FullName
    */
    VnrUtils.splitFullName(txtFullName, txtLastName, txtFirstName);
};
Common.isJson = function (jsonString) {
    /// <summary>check string is Json format</summary>
    /// <param name="jsonString" type="String">The string of Json</param>                
    /// <returns type="Boolean"></returns>
    try {
        var val = eval('(' + jsonString + ')');
        return true;
    } catch (e) {
        return false;
    }
};
Common.stringToJson = function (jsonString) {
    /// <summary>Convert String to Json format</summary>
    /// <param name="jsonString" type="String">The string of Json</param>                
    /// <returns type="Json"></returns>
    try {
        var val = eval('(' + jsonString + ')');
        return val;
    } catch (e) {
        alert("function StringToJson : " + e);
    }
};